import QtQuick 1.1
import com.nokia.symbian 1.1
import com.nokia.extras 1.1
import com.rogerio.apinfo.exportar 1.0
import com.rogerio.apinfo.comunicacao 1.0

import "util.js" as Util

Page {
    id: root
    objectName: "VagasPage"
    tools: ToolBarLayout {

        ToolButton {
            flat: true
            iconSource: "toolbar-back"
            onClicked: qryBack.open();

            QueryDialog {
                id: qryBack
                titleText: "Sair"
                message: "Deseja mesmo voltar? <br>Seus filtros serão apagados!"
                acceptButtonText: "Sim"
                rejectButtonText: "Não"
                onAccepted: {
                    root.pageStack.pop().destroy(500);
                    dadoProxy.RemoverFiltros();
                }
            }
        }

        /*ToolButton {
            flat: true
            iconSource: "qrc:///emailEnviado" + (ativo ? "_gray" : "")
            onClicked: {
                ativo = !ativo;
                dadoProxy.FiltrarVagasContatadas(ativo);
            }

            property bool ativo : false
        }*/

        /*ToolButton {
            flat: true
            iconSource: "qrc:///good" + (ativo ? "_gray" : "")
            onClicked: {
                ativo = !ativo;
                dadoProxy.FiltrarVagasMarcadas(ativo);
            }

            property bool ativo : false
        }*/

        ToolButton {
            flat: true
            iconSource: "qrc:///filtro"
            onClicked: {
                if (!opcoesFiltro.aberto)
                    opcoesFiltro.abrir();
                else
                    opcoesFiltro.fechar();
            }
        }

        ToolButton {
            flat: true
            iconSource: "toolbar-menu"
            onClicked: {
                menu.open();
            }
        }
    }

    Rectangle {
        width: childrenRect.width;
        anchors.centerIn: parent
        visible: lst.count == 0
        color: platformStyle.colorNormalDark

        Column {
            Text {
                text: "Nenhuma vaga encontrada!"
                font.pixelSize: 20
                color: platformStyle.colorNormalLight
            }

            Text {
                text: "Verifique os filtros!"
                font.pixelSize: 20
                color: platformStyle.colorNormalLight
                visible: dadoProxy.filtroAtivo
            }
        }
    }

    Menu {
        id: menu
        MenuLayout {
            /*MenuItem {
                text: "Filtrar"
                onClicked: {
                    Util.PushNaPilha(root.pageStack, Qt.resolvedUrl("filtro/FiltroPage.qml"))
                }
            }*/
            MenuItem {
                text: "Exportar"
                onClicked: {
                    dlgExport.open();
                }
            }
            MenuItem {
                id: menuEnviar
                text: "Enviar currículo"

                QueryDialog {
                    id: msgConfirmaEnvio
                    titleText: "Enviar currículo"
                    message: "Deseja enviar o curriculo para as vagas selecionadas? <br />"
                    acceptButtonText: "Sim"
                    rejectButtonText: "Não"

                    onAccepted: {                        
                        pageStack.push(Qt.resolvedUrl("AlterarInfoBasicaPage.qml"));
                        msgConfirmaEnvio.close();
                    }
                    onRejected: {
                        msgConfirmaEnvio.close();
                    }                    
                }

                onClicked: {
                    msgConfirmaEnvio.open();
                }
            }
            MenuItem {
                id: menuLimparEmails
                text: "Limpar contatos"
                onClicked: {
                    qryLimparEmails.open();
                }
                QueryDialog {
                    id: qryLimparEmails
                    titleText: "Limpar e-mails"
                    message: "Deseja realmente limpar os contatos de e-mail?"
                    acceptButtonText: "Sim"
                    rejectButtonText: "Não"
                    onAccepted: {
                        emailManager.LimparEmails();
                    }
                }
            }
        }
    }

    QueryDialog {
        id: dlgExport
        titleText: "Exportação"
        icon: "qrc:///export"
        message: "Tem certeza que deseja exportar<br />as vagas selecionadas?<br />"
        rejectButtonText: "Cancelar"
        acceptButtonText: "Ok"
        onRejected: {
            dlgExport.close();
        }
        onAccepted: {
            if (exportador.Exportar())
            {
                infoExportacao.text = "Exportação concluída!";
                infoExportacao.iconSource = "qrc:///ok";                
            } else
            {
                infoExportacao.text = "Não foi possivel exportar!<br />Verifique se há vagas marcadas ou espaço na memória do telefone.";
                infoExportacao.iconSource = "qrc:///fail";
            }
            infoExportacao.open();
            dlgExport.close();
        }

        InfoBanner {
            id: infoExportacao
        }

        Exportador {
            id: exportador
            vagas: vagasModel
        }
    }

    ListView {
        id: lst
        width: parent.width-20; height: parent.height
        anchors.horizontalCenter: parent.horizontalCenter
        delegate: DelegateVagas {
            width: lst.width;
            onClique: {
                var comp = Qt.createComponent("VagaDetailPage.qml");
                if (comp.errorString() !== "")
                    console.debug(comp.errorString());
                else
                    Util.PushNaPilha(root.pageStack, comp.createObject(null, {"item": vagasModel.LocalizarVaga(codigoVaga)}));
            }
            onSegurandoDedo: {
                var obj = vagasModel.LocalizarVaga(codigoVaga);
                if (obj !== null) {
                    ctxMenu.codigoVaga = codigoVaga;
                    ctxMenu.itemMarcado = obj.marcado;
                    ctxMenu.open();
                }
            }
        }
        model: dadoProxy
        currentIndex: 0
        orientation: ListView.Vertical        
    }

    ContextMenu {
        id: ctxMenu

        property bool itemMarcado: false
        property int codigoVaga: 0

        MenuLayout {
            MenuItem {
                text: (!ctxMenu.itemMarcado ? "Marcar" : "Desmarcar")
                onClicked: {
                    if (!ctxMenu.itemMarcado)
                        vagasModel.Marcar(ctxMenu.codigoVaga);
                    else
                        vagasModel.Desmarcar(ctxMenu.codigoVaga);
                }
            }
        }
    }

    ScrollDecorator {
        flickableItem: lst
        anchors { right: lst.right; top: lst.top }
    }

    OpcoesFiltro {
        id: opcoesFiltro
        width: parent.width;
        posicaoInicial: parent.height

        onCheckContatadasSelecionadoChanged: {
            dadoProxy.FiltrarVagasContatadas(checkContatadasSelecionado);
        }

        onCheckMarcadasSelecionadoChanged: {
            dadoProxy.FiltrarVagasMarcadas(checkMarcadasSelecionado);
        }

        onCheckNovasSelecionadoChanged: {
            dadoProxy.FiltrarVagasNovas(checkNovasSelecionado);
        }

        onBtnAvancado: {
            Util.PushNaPilha(root.pageStack, Qt.resolvedUrl("filtro/FiltroPage.qml"))
        }
    }
}
